{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# CPSC 330 Lecture 21"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Outline:\n",
    "\n",
    "- 👋\n",
    "- **Turn on recording**\n",
    "- Announcements\n",
    "- Confidence, credence, and `predict_proba` (20 min)\n",
    "- Credence activity (20 min)\n",
    "- Break (5 min)\n",
    "- Visualization videos recap (10 min)\n",
    "- Visualization activity (25 min)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Learning objectives\n",
    "\n",
    "- Interpret a confidence score or credence, e.g. what does it mean to be 5% confident that a statement is true.\n",
    "- Maintain a healthy skepticism of `predict_proba` scores and their possible interpretation as credences.\n",
    "- Be careful and precise when communicating confidence to stakeholders in an ML project.\n",
    "- Identify misleading visualizations."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from sklearn.impute import SimpleImputer\n",
    "from sklearn.pipeline import Pipeline, make_pipeline\n",
    "from sklearn.compose import ColumnTransformer, TransformedTargetRegressor\n",
    "from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder\n",
    "from sklearn.preprocessing import StandardScaler, MinMaxScaler\n",
    "from sklearn.linear_model import Ridge\n",
    "from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n",
    "from sklearn.dummy import DummyClassifier, DummyRegressor\n",
    "from sklearn.model_selection import train_test_split, cross_val_score, cross_validate, GridSearchCV"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.rcParams['font.size'] = 16"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Announcements\n",
    "\n",
    "- hw6 grades posted\n",
    "- hw7 grading in progress\n",
    "- hw8 deadline passed\n",
    "- hw9 posted (last one!), due Monday 11:59pm"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Attribution\n",
    "\n",
    "- The first part of this lecture is adapted from [DSCI 542](https://github.com/UBC-MDS/DSCI_542_comm-arg), created by [David Laing](https://davidklaing.com/).\n",
    "- The visualization component of this lecture benefitted from discussions with [Firas Moosvi](http://firas.moosvi.com/) about his course, [DSCI 531](https://github.com/UBC-MDS/DSCI_531_viz-1)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Confidence and `predict_proba` (20 min)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- What does it mean to be \"confident\" in your results?\n",
    "- When you perform analysis, you are responsible for many judgment calls.\n",
    "- [Your results will be different than others'](https://fivethirtyeight.com/features/science-isnt-broken/#part1).\n",
    "- As you make these judgments and start to form conclusions, how can you recognize your own uncertainties about the data so that you can communicate confidently?\n",
    "\n",
    "#### What does this mean for us, when we're trying to make claims about our data?\n",
    "\n",
    "Let's imagine that the following claim is true:\n",
    "\n",
    "> Vancouver has the highest cost of living of all cities in Canada.\n",
    "\n",
    "Now let's consider a few beliefs we could hold:\n",
    "\n",
    "1. Vancouver has the highest cost of living of all cities in Canada. **I am 95% sure of this.** \n",
    "2. Vancouver has the highest cost of living of all cities in Canada. **I am 55% sure of this.** \n",
    "\n",
    "The part is bold is called a [credence](https://en.wikipedia.org/wiki/Credence_(statistics)). Which belief is better?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "But what if it's actually Toronto that has the highest cost of living in Canada?\n",
    "\n",
    "1. Vancouver has the highest cost of living of all cities in Canada. **I am 95% sure of this.** \n",
    "2. Vancouver has the highest cost of living of all cities in Canada. **I am 55% sure of this.** \n",
    "\n",
    "Which belief is better now?\n",
    "<br><br><br><br><br><br>\n",
    "Conclusion: We don't just want to be right. We want to be confident when we're right and hesitant when we're wrong."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### What do credences mean in practical terms?\n",
    "\n",
    "One of two things:\n",
    "\n",
    "* **I would accept a bet at these odds.** 99% sure means, \"For the chance of winning \\\\$1, I would bet \\\\$99 that I'm right about this.\" 75% sure means, \"For the chance of winning \\\\$25, I would bet \\\\$75 that I'm right about this.\"\n",
    "* **Long-run frequency of correctness.** 99% sure means, \"For every 100 predictions I make at this level of confidence, I would expect only 1 of them to be incorrect.\" 75% sure means, \"For every 100 predictions I make at this level of confidence, I would expect about 25 of them to be incorrect.\"\n",
    "\n",
    "#### It's easy enough to evaluate how good we are at being right...\n",
    "\n",
    "But if we want to evaluate *how good we are at knowing how right we are*?\n",
    "\n",
    "We would need to keep of not just the correctness of our predictions, but also our confidence in those predictions.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### What does this have to do with applied ML?\n",
    "\n",
    "- What if you `predict` that a credit card transaction is fraudulent?\n",
    "  - We probably want `predict_proba` a lot of the time.\n",
    "- What if `predict_proba` is 0.95 in that case?\n",
    "  - How confident are YOU?\n",
    "- What if you forecast that avocado prices will go up next week? \n",
    "  - How confident are you there?\n",
    "- Or what if you predict a house price to be \\\\$800k? \n",
    "  - That is not even a true/false statement."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Loss functions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "When you call `fit` for `LogisticRegression` it has these same preferences: correct and confident > correct and hesitant > incorrect and hesitant > incorrect and confident."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import log_loss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- This is a \"loss\" or \"error\" function like mean squared error, so lower values are better.\n",
    "- When you call `fit` it tries to minimize this metric."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Correct and 95% confident:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.05129329438755058"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log_loss(y_true=np.array([0]), y_pred=np.array([[0.95, 0.05]]), labels=(0,1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Correct and 55% confident:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5978370007556204"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log_loss(y_true=np.array([0]), y_pred=np.array([[0.55, 0.45]]), labels=(0,1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Incorrect and 55% confident:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7985076962177716"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log_loss(y_true=np.array([0]), y_pred=np.array([[0.45, 0.55]]), labels=(0,1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Incorrect and 95% confident:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.995732273553991"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log_loss(y_true=np.array([0]), y_pred=np.array([[0.05, 0.95]]), labels=(0,1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "jupyter": {
     "source_hidden": true
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "grid = np.linspace(0,1,1000)\n",
    "plt.plot(grid, [log_loss(y_true=np.array([1]), y_pred=np.array([g]), labels=(0,1)) for g in grid]);\n",
    "plt.xlabel(\"Confidence in correct answer\");\n",
    "plt.ylabel(\"Loss (lower is better)\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- Your loss goes to 0 as you approach 100% confidence in the correct answer.\n",
    "- Your loss goes to infinity as you approach 100% confidence in the incorrect answer.\n",
    "- (optional) See also the very related [How to assign partial credit on an exam of true-false questions?](https://terrytao.wordpress.com/2016/06/01/how-to-assign-partial-credit-on-an-exam-of-true-false-questions/)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The real `LogisticRegression` is averaging this score over all training examples."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "Some nice examples: \n",
    "\n",
    "- [Scott Alexander](https://slatestarcodex.com/2019/01/22/2018-predictions-calibration-results/)\n",
    "  - Look at how the plot starts at 50%. That is because being 40% confident of \"X\" is the same as being 60% confident of \"not X\".\n",
    "- [Good Judgment Project](https://www.gjopen.com/)\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Credence Activity (20 min)\n",
    "\n",
    "- Take a few minutes and assign credences or values to the claims below, in the Google Doc. Afterwards, we'll discuss.\n",
    "- **Do not search the answers; the point of the exercise is to evaluate how good we are at guessing.** \n",
    "- Try not to be influenced by other peoples' answers! Better to pick your answers before going to the Google Doc.\n",
    "\n",
    "1. I am __ % sure that the world's tallest building is between 200m and 800m tall. \n",
    "2. I am __ % sure that there are between 200 and 300 bones in an average adult human body. \n",
    "3. I am __ % sure that the planet Mars is bigger (diameter) than the planet Mercury. \n",
    "4. I am 99% sure that the world's tallest tree taller than __ m.\n",
    "5. I am 90% sure that the world's tallest tree taller than __ m.\n",
    "6. I am 50% sure that the world's tallest tree taller than __ m.\n",
    "\n",
    "NOTE: 100% means you are completely sure the statement is true, 0% means you are completely sure the statement is false."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Break (5 min)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Visualizing your results (5 min)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Pre-viewing review from [Calling BS visualization videos](https://www.youtube.com/watch?v=T-5aLbNeGo0&list=PLPnZfvKID1Sje5jWxt-4CSZD7bUI4gSPS&index=30&t=0s):\n",
    "\n",
    "- Dataviz in the popular media.\n",
    "  - e.g. [modern NYT](https://youtu.be/T-5aLbNeGo0?t=367)\n",
    "- Misleading axes.\n",
    "  - e.g. [vaccines](https://youtu.be/9pNWVMxaFuM?t=299)\n",
    "- Manipulating bin sizes.\n",
    "  - e.g. [tax dollars](https://youtu.be/zAg1wsYfwsM?t=196)\n",
    "- Dataviz ducks.\n",
    "  - e.g. [drinking water](https://youtu.be/rmii1hfP6d4?t=169)\n",
    "  - \"look how clever we are about design\" -> making it about me instead of about you (see last class)\n",
    "- Glass slippers.\n",
    "  - e.g. [internet marketing tree](https://youtu.be/59teS0SUHtI?t=285)\n",
    "- The principle of proportional ink.\n",
    "  - e.g. [most read books](https://youtu.be/oNhusd3xFC4?t=147)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- [Demo of cleaning up a plot](https://www.darkhorseanalytics.com/blog/data-looks-better-naked)\n",
    "- [Principle of proportional ink](https://serialmentor.com/dataviz/proportional-ink.html) from a viz textbook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Visualization activity (20 min)\n",
    "\n",
    "- We'll load up the housing data as per usual.\n",
    "- The housing data is not included in the course repo, here is a link: https://www.kaggle.com/c/home-data-for-ml-course/"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "housing_df = pd.read_csv(\"data/housing.csv\", index_col=0)\n",
    "\n",
    "housing_train, housing_test = train_test_split(housing_df, random_state=123)\n",
    "\n",
    "X_train = housing_train.drop(columns=['SalePrice'])\n",
    "y_train = housing_train['SalePrice']\n",
    "\n",
    "X_test = housing_test.drop(columns=['SalePrice'])\n",
    "y_test = housing_test['SalePrice']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "numeric_features     = ['LotFrontage', 'LotArea', 'OverallQual', 'OverallCond', 'YearBuilt', \n",
    "                        'YearRemodAdd', 'MasVnrArea', 'BsmtFinSF1', 'BsmtFinSF2', 'BsmtUnfSF', \n",
    "                        'TotalBsmtSF', '1stFlrSF', '2ndFlrSF', 'LowQualFinSF', 'GrLivArea', \n",
    "                        'BsmtFullBath', 'BsmtHalfBath', 'FullBath', 'HalfBath', \n",
    "                        'TotRmsAbvGrd', 'Fireplaces', 'GarageYrBlt', 'GarageCars', \n",
    "                        'GarageArea', 'WoodDeckSF', 'OpenPorchSF', 'EnclosedPorch', '3SsnPorch', \n",
    "                        'ScreenPorch', 'PoolArea', 'MiscVal', 'YrSold']\n",
    "ordinal_features_reg = ['ExterQual', 'ExterCond', 'BsmtQual', 'BsmtCond', 'HeatingQC', \n",
    "                        'KitchenQual', 'FireplaceQu', 'GarageQual', 'GarageCond', 'PoolQC']\n",
    "ordinal_features_oth = ['BsmtExposure', 'BsmtFinType1', 'BsmtFinType2', \n",
    "                        'Functional',  'Fence']\n",
    "categorical_features = list(set(X_train.columns) - set(numeric_features) - set(ordinal_features_reg))\n",
    "\n",
    "ordering = ['Po', 'Fa', 'TA', 'Gd', 'Ex']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "numeric_preprocessing = make_pipeline(SimpleImputer(strategy='median'), \n",
    "                                      StandardScaler())\n",
    "ordinal_preprocessing = make_pipeline(SimpleImputer(strategy='most_frequent'), \n",
    "                                      OrdinalEncoder(categories=[ordering]*len(ordinal_features_reg)))\n",
    "categorical_preprocessing = make_pipeline(SimpleImputer(strategy='constant', fill_value=\"?\"),\n",
    "                                          OneHotEncoder(handle_unknown='ignore', sparse=False))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "preprocessing = ColumnTransformer([\n",
    "    ('numeric', numeric_preprocessing, numeric_features),\n",
    "    ('ordinal', ordinal_preprocessing, ordinal_features_reg),\n",
    "    ('categorical', categorical_preprocessing, categorical_features)\n",
    "])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "preprocessing.fit(X_train);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "ohe_columns = list(preprocessing.named_transformers_['categorical'].named_steps['onehotencoder'].get_feature_names(categorical_features))\n",
    "new_columns = numeric_features + ordinal_features_reg + ohe_columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_housing = pd.DataFrame(preprocessing.transform(X_train), index=X_train.index, columns=new_columns)\n",
    "X_test_housing = pd.DataFrame(preprocessing.transform(X_test), index=X_test.index, columns=new_columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.ensemble import GradientBoostingRegressor"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's compare sklearn's `GradientBoostingRegressor` to `RandomForestRegressor` for different values of `n_estimators`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_estimators_values = [3, 10, 30, 100, 300]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3\n",
      "10\n",
      "30\n",
      "100\n",
      "300\n"
     ]
    }
   ],
   "source": [
    "score_rf_train = list()\n",
    "score_rf_test = list()\n",
    "score_gb_train = list()\n",
    "score_gb_test = list()\n",
    "\n",
    "for n_estimators in n_estimators_values:\n",
    "    print(n_estimators)\n",
    "    rf = TransformedTargetRegressor(\n",
    "        RandomForestRegressor(n_estimators=n_estimators, random_state=123), \n",
    "        func=np.log1p, inverse_func=np.expm1)    \n",
    "    rf.fit(X_train_housing, y_train)\n",
    "    score_rf_train.append(rf.score(X_train_housing, y_train))\n",
    "    score_rf_test.append(rf.score(X_test_housing, y_test))\n",
    "    \n",
    "    gb = TransformedTargetRegressor(\n",
    "        GradientBoostingRegressor(n_estimators=n_estimators, random_state=123),\n",
    "        func=np.log1p, inverse_func=np.expm1)\n",
    "    gb.fit(X_train_housing, y_train)\n",
    "    score_gb_train.append(gb.score(X_train_housing, y_train))\n",
    "    score_gb_test.append(gb.score(X_test_housing, y_test))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here is a low-quality plot that is confusing and perhaps downright misleading:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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ByIuLo7hw4eHbN11EdQ3oKorVXUs0AroDrRW1dGq+mUw1flJC+SExhM47f+niPQWkWTgEaCnu7x8FkpV/bWq/lNVP1bVhcBYIAO4y1/FInKFiGSISMauXbtq81mqtCBjC63io5lwjF1jYExTkZ6ejojw7bffMn78eBITE5k+fTqpqamkp6cDzlQvVR3KysrKomdPZ5N1+eWXIyIV8o4aNYqTTz6Z1157jaFDhxIXF8djjz0GwJ///GdGjBhBu3btaNu2LcOHD+f111+vVL/vumfNmkX37t358ssvOeWUU0hISKBv37488cQTIf9+vNVqz0ZEYoGXgIdU9SNVzQe21WH9+6i4B1ImCf97POVUdYOIzAT+ApSdt1kJPATcAGRXU7ZERBYA94hIsqpm+yx/EngSIC0trc43ScnJK+KNb7KZltad+JiomgsY04zMfS2T1dtyI9qGgV1bc/tZg4IuP3nyZC699FJuvPFGPB4Pbdq04ZFHHmH+/PksX74cwO+hrOTkZBYvXsw555zDTTfdxKRJkyrlXbduHddccw233norvXr1ol07Z5OZlZXFZZddRmpqKsXFxbz22mtMnDiRN954gzPOOKPa9ubm5nLBBRcwZ84cbrvtNp555hmuuuoq+vfvz+jRo4P+HqpTq2CjqoUiMg54OETrz8Q5b+NrILA6gPYsEpFXgH5Aoar+ICKPA5tVdVMNxcv2nsJ+x63Xvt5GQXEp09NsYIAxTdE111zDtddeWyGtW7duANUexoqLi2Po0KEA9OrVy2/e3bt38/bbbzNkyJAK6ffff3/569LSUsaOHcu6det44oknagw2Bw4c4LHHHisPLKeeeipvv/02L7zwQsMINq5PcUaCfRCC9S8F7heRXqq6AUBEUoGfAr8PpAJVLQHWuGW7AufhnE+qkjtSbRqwSVW3B936AL2csZkBXVoxuFubcK/KmEanLnsUDcWUKVPCVndqamqlQAOwYsUKbr/9dr744gt27dpVfhvp/v3711hnQkJChaASFxdH37592bSppt/owQvmnM31wKUicrWIdBeRKBHxeD9qUdffgCzgVRGZLCKTcEanbQb+WpZJRHqISLGI3OaVFiMiD4nI2SIyRkR+jXMeJhN4wCvf+SLyoohcLCKjRWQG8D7OyLkbg/j8tbImO5dVW3KYnnaUXTltTBMVzFxhdal78+bNjB07lr179/Loo4/y2Wef8cUXXzBhwgTy8/P91FJRUlLl8VdxcXEBlQ1WMHs237jPD+P/cJoGWq+qHhKRMTjnWf6Fc2jrPWCOqh70yio4Q5a9A5kCfYELcCYD3QI8DfxRVb2HRG8EOuHs7bTDmWngC2CCqr4VSDvrYkHGFmKihLOHdgv3qowxERLOH5L+6n7zzTfJycnh5Zdfpnv37uXphw8fDls76iqYYHMHITzP4Z5bObeGPFn4jFBT1WJgYgD1fw6MqUMTg1Y26ebpA7vQrmVsJJpgjGngyoYx5+XlBVymLKjExBy5Fcm6dev49NNPKwSfhiSY62zSw9COJqls0s1paQ2z840xkde5c2fat2/Piy++yLHHHkvLli3p2bNnlReBAowbN47o6Gguvvhirr/+erKzs7n99ttJSUmhtLS0ynKRFNR1NiKSLCL3i8gXIvKDiPxPRO4VEbuIxMtLX2wmuU08p/QNeG5SY0wz4/F4eOqpp9i3bx/jxo3jhBNO4LXXXqu2zKBBg3juuef48ccfmTRpEvfeey933303p556aj21uvakbARDwAVE+uHMj9YWZ2TadqALcBLOtTGnqOr60DYzctLS0jQjI6PW5bbtz+On9yzj6tF9uP70mkeHGNMcrFmzhqOPPjrSzTB1UFMfisgKVa10q5dgztncgzOz84nuuZSyFfQA3naXnxNEvU1Kdk4+vTsmMs0m3TTGmKCCzWjgSu9AA6CqP4pIOvBYCNrV6B3fI4l3fnOqDXc2xhiCO2cTi3PDMn8OuMsNdkdCY4wpE0yw+Qr4te/Fm+JsWX/pLjfGGGPKBXudzb+BNSLyEs6El11wpn/pC5wZuuYZY4xpCoK5zuZNEZkI3MmR+9kosAKYqKpvh7aJxhhjGrugbp2sqm8Cb4pIAu7tAFS14c6TYIwxJqKCCjZl3ABjQcYYY0y1aj1AQERuFJFHq1j2iIj8tu7NMsYY05QEMxptNrCqimVfucuNMcaYcsEEmxSgquloNgA9alOZiBwlIgtFJEdEckVksYikBFi2p1t2v4gcEpH3RaTSNAnufXZuEpEsEckXka9FpNqZpo0xpi5KS0uZM2cOycnJeDwezj77bL/59u/fT3p6OitXrgxbW+bPn8/TTz8dtvoDEcw5m8NAVTdn6Q4UBFqRO8BgmVvmEpxRbXcC74vIsap6qJqy7XHmaDsA/MJt13Vu2RNVdY1X9j8AN+CMnlsBzAAWiMhEVX0j0PYaY0ygFi5cyMMPP8wDDzzAiBEjqpzFef/+/cydO5fu3bszbNiwsLRl/vz5FBcX8/Of/zws9QcimGDzMfBbEVmoquWBRUTicO7i+XEt6roc6AX0V9Xv3XpW4ew5/QJ4sJqyVwGdgZFeZZfh7F3NBaa7aZ1wAs3dqlp20+73RaQPcDdgwcYYEzIFBQXExcWxZo3ze3fOnDl4PEFNsN+kBPMNpONcvLlOROaJyC9FZB6wzk2/rbrCPiYBn5cFCwBV3Ygzm/TkGsoOB9b7lD2EE+wmikhZIB2PM4XOsz7lnwUGi0jPWrTXGGPKpaenIyJ8++23jB8/nsTERKZPn05qairp6ekAREVFISLMnz+/UvmsrCx69nQ2QZdffjkiUinv4sWLGT58OAkJCbRt25Zp06axadOmCvU8//zzDB06lMTERNq0acPgwYP561//CsCoUaP48MMP+fTTT8vrHzVqVDi+jmoFc1Hn1yIyGrgfuBEnYJXiHNI6V1W/rkV1g4BX/aRn4sxIUJ0SoNBPegHQAugNrHXXUQB875Mv030eiHPraGNMJPzn97D9m5rzhVOXwXDG3UEXnzx5Mpdeeik33ngjHo+HNm3a8MgjjzB//nyWL18OQO/evSuVS05OZvHixZxzzjncdNNNTJo0qULeJ554gquuuorZs2dz2223ceDAAdLT0xk5ciSrVq2iVatWfPLJJ1x44YVcc8013HfffZSWlvLdd9+xf/9+AB577DEuvPBCSkpKygNQ69atg/6swQr2os7/AaeKSAuOXNQZ+D1Nj2iHcw8cX3vdequzFjhNRNqr6h5wBgIAJ3rVXfa8XyvfuGevT75yInIFcAVASkpAYxWMMc3YNddcw7XXXlshrVs359T28OHDqywXFxfH0KFDAejVq1eFvAcPHuTGG29k9uzZFU7u/+QnP6Ffv378/e9/Z86cOXz++ee0bduWP/3pT+V5Tj/99PLXAwcOpHXr1hQXF1fblnCr60WdeUAwQaZCNX7SApku+QngGuCfInINzgCBW4Cyw2Jl90Ytm04n4HWo6pPAk+DcPC2AthhjglWHPYqGYsqUKSGvc/ny5eTm5jJz5kyKi4vL07t3786AAQP46KOPmDNnDieccAL79u3jwgsvZMaMGZx88sm0bds25O2pq2Au6vR4nQ8pSxsvIteLyNBaVrcPP3sWuHtL1RVU1Q3ATOB4nENk24ARwENulmz3eS+QJJXn+0/yWm6MMUFLTk4OeZ07d+4EYNy4ccTExFR4fPPNN+zZsweAkSNHsmDBAjZv3syUKVPo2LEj48aNY9Wqqi6HjIxg9mxewDkHcjGAiFzJkRumFYnImar6boB1ZeKcU/E1EFhdU2FVXSQirwD9gEJV/UFEHgc2q2rZGbRMIA7nHI73eZuB7nON6zHGmOqE495VZUOl58+fz6BBlTeTrVq1Kn89depUpk6dysGDB/nggw+48cYbmTBhAlu2bGkwI+GCCTbDcQYGlPkt8BTOsOcncQ5lBRpslgL3i0gvd08FEUkFfgr8PpAKVLUEWOOW7QqcB9znleVNnIEEM3GGRJe5EPjWHf1mjDERERcXB0BeXsUzEieddBKtWrXi+++/55JLLgmorsTERCZOnMiGDRu49tpr2bNnDx07diQuLo4DB6q652X9CCbYdAK2ArjXqvQE/qyqB0TkGeD5WtT1N+Bq4FUR+T+ccyt/ADYDfy3LJCI9gB+AO1T1DjctBrgX+BDIxdlDuglnT+aBsrKqulNEHgJuEpEDwEqcgDSGmodXG2NMWHXu3Jn27dvz4osvcuyxx9KyZUt69uxJ+/btue+++/jVr37Frl27OOOMM2jTpg1bt27lww8/ZNSoUVxwwQXcdttt7Nixg9GjR9O1a1e2bNnCI488wpAhQ+jYsSPgDBJ47LHHeOmll+jduzetWrWif//+9ftBVbVWD2AHcLb7+jJgp9eyscDBWtaXAizCCRgHgFeAVJ88qTiBKN0rLRrnJm47cA7r/YAz+0CCn3VEAf8H/OjmXQVMDaR9xx9/vBpjQmP16tWRbkJI3X777QpoUVFRpWW33HKLOpvYmi1ZskSPPvpojY6OVkCfeeaZ8mWvv/66jho1Slu1aqXx8fHau3dvnT17tmZmZqqq6r///W89/fTTtUuXLhobG6vdu3fXn//857p169byOrKzs/WMM87QxMREBXTkyJFBf+aa+hDIUD/bUtFKI4KrJyJLgGR3w363W/Esd9kvgN+o6oBaVdqApaWlaUZGRqSbYUyTsGbNGo4++uhIN8PUQU19KCIrVLXSHJXBnDn6Hc4IsqVAPM6MAmXOA5YHUacxxpgmLJgZBNYD/bwvpvRyLbA9JC0zxhjTZAR9UaefQIOqRnjOCWOMMQ1RwxiAbYwxpkmzYGOMqVe1HZRkGo669J0FG2NMvYmJial08aJpPPLy8sovQq0tCzbGmHrTqVMntm7dyuHDh20Pp5FQVYqKiti7dy9btmyp8o6jNanTrM8mwlRh30bI/tp5HNrtvdDvy8rL1H96sMsqbUCCWRbsuqoq4xJxHx7AfRZPFWkceV2eLlWkVVNnhfRw1BmBz1QpzTfdX51OeusYgbYt2bZlM0XFJW5/+plXLAxzjZngRUdHEx8fT0pKCvHx8cHVUd1C9y6WT+FMSfMKcLOq5rvL/qeqJ1ZT3IRSaSns+d4NLF+5z6ugIMdZ7omBlh2o8I9b4R/W55+3qmWV/serqq+6ZQGuq9p2hHpd6gQgLXVflx55XyENP2mlVZT1V94nzVTS2n0EpuYA5vR5GIJyyOqUaso3gDrL073y9TkN2h4Vqi4Hat6zeQxYDHwO/Bp4T0QmqOoBICakLTFHlBTD7nVeQeVr506GhQed5VFx0OUYGDwVko9zHp0GQnRsRJtt/FCtIlj5C3YBBjDfYFdtnbUJoF55a6yzhvVXSgsk0New/nDUGdRncvOVloTwuw+07wP4ewrFj5wLFtR7sOmsqn9xX88SkZtwAs5phOQTGYoLYdeaI0Fl21ew41sozneWxyRAl2NhyEwnqHQdAh36QZTF+kZBBCQq0q0wzY1vUKptAItvG/Im1RRsKgw7UNW7RKQIeA9o5b+IqVFJESy7EzZ8ADtXQ0mhkx7bygkoaZc6QSX5OGjfBzy2sTLG1EID/JFTU7BZJyKnqeo7ZQmqer+IlAL3h7dpTdia1+DTP0HKSTD8KvdQ2BBI6gkN5EZHxhgTSjVt2WYAH/kmquqDQEgO6InIUSKyUERyRCRXRBaLSEqAZVNE5B8isklEDovIOhG5U0Ra+uTLEhH18zg7FJ+h1jKehrYpMOvfcNodcMy50L63BRpjTJNV7Z6NqhZUs2xrXVcuIgnAMpx7zFyCcx7oTuB9ETlWVQ9VU7Ylzh1BY4BbgU3ACTh34+yLMwO1t7eoOEM1wNq6foZa27UOsj6Gsbfb4TFjTLMR6etsLgd6Af1V9XsAEVkFrAd+ATxYTdmf4gSV8ar6tpv2voi0A24QkQRVPeyVf7eqfh7yT1BbK55xhikPvTDSLTHGmHoT8HEbETlZRP4oIneIyNAq8rQXkYtrsf5JwOdlgQZAVTcCn1LzLZvLxvnm+qTvx/lcDe+qsKI8+Oo5OPosSOwU6dYYY0y9CSjYiMgM4APg9zi3V/5CRK50l3URkd+IyEc497J5phbrHwR86yc9ExhYQ9l3cfaA7hGRgSKSKCJjcO6p84SfQ3Bnued1CkTk84icr/l2MeTnQNrP633VxhgTSYEeRvs9sArnsNcOYDRwp3vOZR7OEOmdwHycmQYC1Q7Y5yd9L5BUXUFVzReRk4FFOMGpzFPA1T7ZXwO+ADYCnd3lS0TkIlV91rduEbkCuAIgJSWgsQqByXjauUYm9eTQ1WmMMY1AoMGmLzBdVVe47/8lInnAyzgn5n8J/EeDm1nPX5kaD4GJSDzwEtAJuMhtx4nAbUAxcFX5ClR/7VN2Cc6sCHcBlYKNqj4JPAmQlpYWmotXs7+GrRkw4W4/U7EYY0zTFmiwaQHs8kkrOyl/vaq+EeT69+Hs3fhKwv8ej7dLgVFAH1X9wU37SERygCdF5AlV/dpfQVUtEZEFOIfgklU1O7jm10LGMxAdD8fNCPuqjDGmoanNhR2+v/DLzolk1WH9mTjnbXwNBFbXUHYwsM8r0JT5n/t8dA3ly3Yvwj/tTn4urHrZuZ6mRbVHB40xpkmqzdDnD0XkO5wAkYlzjYoCpXVY/1LgfhHppaobAEQkFWdY8+9rKLsdSBKRPt6j2YCfuM9VXgckItHANGCTqm4PtvEB++ZlKDrkTENjjDHNkARymkVELgOGuI9jgUQovxHFbiADWOE+ZwR6wad7YebXQB7OKDcF/oAz79qxqnrQzdcD+AG4Q1XvcNNScQYtbMcZpLAJSMO5wHMdcKKqlorI+TjDqN8ANuMMEPgVcDJwvqq+WF0b09LSNCMjI5CP458qPP5T5wLOX3xk52uMMU2aiKxQ1TTf9ID2bFT1KZ/K+uIEnqEcCUITyrIDAV0ar6qH3OHKDwH/wgle7wFzygJN2SrdOj1eZbNEZDjOrAB3Ah1wgsmTwDxVLdvj2ogziOA+nPNDh3FGpk1Q1bcCaWedbP4f7MyEiX+yQGOMabaCmkFAVdfjXOOyoCxNRDoBw4DjalnXJuDcGvJk4WeEmqquBqbXUPZzYExt2hRSGU87szkPnhaxJhhjTKSFbLoaVd0JvOk+DMDhvZC5BIZdBHGJkW6NMcZEjE0zHE5fPQ8lBXD87Ei3xBhjIsqCTbiUljqH0I76iXMLZ2OMacYs2IRL1kew9wcb7myMMViwCZ/kIXDGfTCwpsmrjTGm6Yv0/WyarhZt4SdXRLoVxhjTINiejTHGmLALaAaB5kxEdgE/1qJIB5xZFUzDYv3SMFm/NEx16ZceqtrRN9GCTYiJSIa/qRpMZFm/NEzWLw1TOPrFDqMZY4wJOws2xhhjws6CTeg9GekGGL+sXxom65eGKeT9YudsjDHGhJ3t2RhjjAk7CzbGGGPCzoJNCIjIUSKyUERyRCRXRBaLSEqk29VUiUh3EXlURJaLyGERUffOrb75kkTkKRHZLSKHRORdERnsJ1+8iNwnItkikufWe2q9fJgmQkSmisgiEfnR/Q7XishdItLKJ5/1ST0SkfEiskxEtotIgYhsEZGXRWSgT76w94sFmzoSkQRgGTAAuAS4COgLvO/e9tqEXh+cm+btAz72l0FEBFiKcwfZX+PcoC8Gp1+6+2T/O3A5cBswEcgG3hKRIeFofBN1A1AC3IzznT8OXAW8IyIesD6JkHbACuBq4HTgJmAQ8LmI9IB67BdVtUcdHsC1OP9kfbzSegLFwHWRbl9TfAAer9eX4dyKPNUnz2Q3fbRXWhtgL/CIV9pxbr7ZXmnRwFpgaaQ/a2N5AB39pF3sfrdjrE8azgPo736/19dnv9ieTd1NAj5X1e/LElR1I/ApTieaEFPV0gCyTQK2qer7XuVygNeo2C+TgCLgJa98xcCLwHgRiQtJo5s4Vd3lJ/kL97mb+2x90jDscZ+L3Od66RcLNnU3CPjWT3omMNBPuqkf1fVLiogkeuXbqKqH/eSLxTlkZ4Iz0n1e4z5bn0SIiESJSKyI9AX+CmzHCRJQT/1iwabu2uGcO/C1F0iq57aYI6rrFzjSNzXlaxfidjULItINuAN4V1Uz3GTrk8j5L1AArAOOxTm0udNdVi/9YsEmNPxdGSv13grjTQisXwLNZwLk/hJ+Fee85WzvRVifRMpFwHDgAiAXZ+BGqrusXvrFgk3d7cN/RE/C/68AUz/2UnW/wJG+qSnfXj/LTBVEJB5nZFMvYLyqbvFabH0SIaq6RlX/q6ovAGOBROD37uJ66RcLNnWXiXMs09dAYHU9t8UcUV2/bFLVg175erpD2H3zFQLfYwIiIjHAIuBE4Geq+o1PFuuTBkBV9+N8h2XnWOqlXyzY1N1SYLiI9CpLcHdPf+ouM5GxFOgmImUnqRGR1sBZVOyXpTjXFEzzyhcNnAe8raoF9dPcxs29luY5nF/Nk1X1cz/ZrE8aABHpjHNd4A9uUr30i03EWUfuhZtfA3nA/+Ec0/wD0Ao41utXgQkhEZnqvhwLXAn8EtgF7FLVD92N3yfAUcBvcQ4F3IRzcvQ4Vd3sVdeLwHg330acixEnAiep6sr6+USNm4g8jtMP84B/+yzeoqpbrE/qn4gsAVYCq3DO1fQDfgN0AU5U1XX11i+RvsCoKTyAFJzDB7nAAeAVfC4ytEfIv3Ot4vGBV552wNM4x5IPA++5/zy+dbUAHsQZDpqPM3JnVKQ/Y2N6AFnV9Em69UnE+uVGnBkE9rvf91qcoc+pPvnC3i+2Z2OMMSbs7JyNMcaYsLNgY4wxJuws2BhjjAk7CzbGGGPCzoKNMcaYsLNgY4wxJuws2BhjjAk7CzbGGGPCzoKNMcaYsLNgY4wxJuws2BhjjAk7CzbGGGPCzoKNMcaYsLNgY4wxJuws2BhjjAk7CzbGGGPCzoKNMcaYsLNgY4wxJuws2BhjjAm7RhNsRKS7iDwqIstF5LCIqIikBlg2XkTuE5FsEclz6zg1zE02xhjjajTBBugDTAf2AR/XsuzfgcuB24CJQDbwlogMCWUDjTHG+CeqGuk2BEREPKpa6r6+DPgb0FNVs2oodxzwFfBzVX3GTYsGMoG1qjopnO02xhgD0ZFuQKDKAk0QJgFFwEtedRWLyIvA70UkTlULqircoUMHTU1NDXLVxhjTvKxYsWK3qnb0TW80waYOBgEbVfWwT3omEItzeC6zqsKpqalkZGSEsXnGGNN0iMiP/tKbQ7Bph3Oex9der+UViMgVwBUAKSkp4WuZMcbUgapSqlBSqpSq83BeQ6mbVqJKaSnly1Rx0lQpLa24vCxPr46JtGkRE9K2NodgI4C/E1NSVQFVfRJ4EiAtLa1xnNQyph6Ubdx8N1zOa68NnfeGr2xDp2V58NooHtlYVlne3Rj6lq9yw+q+994AV1yHd11e6yvf8Lr5ffOUr8PrdUDtrfid+bZX3baVt0998lT6no8Ei3Cdcn9m1gmMHtAppHU2h2CzF/C3e5Lktdw0USWlys4D+ew/XFS+ETjya89nI1TDhqr8vbshqW6j5P3L0XcdJaUEtGEtrWId5eX9bJQqbVh9ftWWLa+wESvVajasFT9TIxlPFBARiBLB4xE8Za+933vc9yJEecTJX55WcbnH45QXN6/zGqKjPMRFV1yHkwe3TnHXi5tHKrbJex1l7yvVdaS8v8/gu44ot73en80jeL0WBndvE/LvuzkEm0xgiogk+Jy3GQgUAt9HplmmrkpKld0HC9i2P4/snHznsT+P7Fz3OSefnQcKKCltGFtIKfuHliMbLu/XFTYS5a+9NnReG5Ior42F90Yl2uMp35D43VCVlXfb4m+jVGF9VWxcozxU3NB5ry+gjTdHNoLVtNd34x3lqVy+ciCoubxHnPKm/jSHYLMUmAtMA/4B5UOfzwPerm4kmomc0rJAkpPP9pw8tu3PZ3tufnlg2Z6Tz47cfIp9AklctIeubVuQ3CaeEb3b07VNC7q0iaddy1i/GyrvX6VVb1gr//KsGCBq/lVsGzfT3DWqYCMiU92Xx7vPZ4jILmCXqn4oIj2AH4A7VPUOAFX9SkReAv4kIjHARuAqoCcws34/gQE3kBwqYHtOvhNEcpwA4h1Y/AWS2GgPXdvE06VNPD/p2Y7ktvF0adOiPK1rmxa0TYixjboxDVCjCjbAAp/3j7nPHwKjcE76R1F5ZoTZwDzgTqAt8DUwQVVXhquhzZWqsudQIdn788kuDyJ5bM/Jd9Jy89iRU0BhScXLpmKjPHRpE09ym3hO7NnODR5OMEluE0/Xti1IskBiTKPVqIKNqla7pXFnE6iUR1XzgOvchwmSqrL3UOGR8yNuMMn2OmeyPSe/UiCJiRI3kLRgWEoSyW1a0LVtPF1aO0GkS5t42reMtUBiTBPWqIKNCR9VZf/hIrbl5Ll7IE4Q2e7umZQFk8LiyoGkc2tnj2TIUW1JHhxPcut4kt3zJsltWtC+ZSwejwUSY5qzsAYbERkK3AqcinP46kRVXSkifwQ+UtU3w7l+41BVcvKK3JPs7sn2siDinnjPzskjv6hiIIn2HAkkx3Zvy/hB8W4AcYJIctt4OrSMs0BijKlR2IKNiJwMvAtsAJ4HrvZaXApcCViwCZH9hwv5ctP+ioe3yvZScvLJKyqpkD/KI3RuFUdy2xYM7NqacUd3cgJImyN7JR0S44hqzIGktBTy9sHh3VBwEFCOXChS9rqKNKjFcoIoE0g7CEOd3mUIsM5gvo9Qf8fh/j4IQ53h+o6rqDOUf8c/ux96jCCUwrlnczfwFnA2zkl772CzErg4jOtuVvYdKmTio5+wdX8eAB6Bzq2dEVpHJ7dmzIBOzgl39/xI1zYt6NiqEQaSkiI4vNcJHod2u897qn6ftxeCnr/VhJc4Fx5VeO2+L3sd0HIpzxJ0nVWWqU2dgba9mjqD+j4EPJ6K+Wr9HfppR0w8oRbOYDMMOEdVVUTUZ9luoNKsoKb2VJXfLvyaXQcK+NvFaRzTrTUdE+OIjmoEtyoqyg8scBze46Tl76+iIoEWSdCyAyR0gA59IWXEkfctO0BcK8L/j++9nCDKBNIOgqizNu0gwHYE+dlsEEizFc5gkw8kVLEsGcgJ47qbjb9/spF31+wk/ayBnDawc+QaogqFh6oIGl4Bw/t94UH/dUkUJLR3g0V76DL4SNAoT+9w5LlFEkTZWBdjGrJw/od+AswRkVe90sr2cC4FloVx3c3CV5v3c8+b3zF+UGcuOSk1tJWrQn6OnyBRzR5Icb7/uqJi3eDQ3nlu16vi+wrBoz3Etz1yaMAY0ySEM9jcCnyKcwHlQpxAc4mIPIgzA8AJYVx3k5eTV8TVz6+kU6t47j33uJqvUSktgbz9ge1xlD2XFvmvK6blkUCR2Bk6Dao6cCS0dw5h2eETY5q1sAUbVf1aRE4F7gNuwTmIezXwMTBSVdeGa91Nnapy48JVbM/JZ8GVI2iTEAM7v4ONH1YdSPL2VX2yPK7NkWDRNgW6Dq18qMo7mMS0qN8PbIxp9MJ6oNudDmasiMTj3KRsv587Zppa+tfnP/Jm5nZu+dnRDE1Jgl1r4alxUHiASifLO/aDhJMq73GUvU9oD9Gxkf5IxpgmLizBRkRigZeAh1T1I1XNB7aFY13Nzbdbc7jz32sYM6ATl57c0zmv8uJMZ6ji5cugfW/wREW6mcYYU0FYzsKqaiEwLlz1N1cH8p3zNO1axnL/tOPwoLDkSti3Eab9w9mLsUBjjGmAwhkMPgWGh7H+ZkVVuXnJt2zel8ejFwylXctY+OheWPsGjP8jpP400k00xpgqhfOczfXAKyJyEHgFyMZrIgsAVbu8O1AvfrGZ177exm/H9+eE1Hbw3RvwwV1w3Plw4hWRbp4xxlQrnHs23wC9gYeBH3FuwVzk9SgM47qblDXZuaQvzeSUvh24amRv2L0elvwCkofAxIdsWLExpsEL557NHfjsyZjaO1RQzNXPr6R1ixgenD4ET+EBePECiIqB8561YcjGmEYhnNfZpIer7ubk1le/ZcPuQzx32U/o2DIGXv457PkBLn4F2h4V6eYZU0lubi47d+6kqKiKi4JNoxMdHU18fDwdO3YkPj64STrDfT+bZJxzNyNxrrPZA3wAPKiq28O57qZg4YotLF65lWvH9uWk3h3gw/vgu3/D+Lug56mRbp4xleTm5rJjxw66detGixYt7O6rTYCqUlxczMGDB9m0aROdO3emTZs2ta4nbOdsRKQfzlQ11wAHgf8Bh4Brga9EpG+41t0UrN9xgFtf+Zbhvdpxzdi+sO4teH8eHHseDL8q0s0zxq+dO3fSrVs3EhISLNA0ESJCTEwMSUlJdO/enT179gRVTzj3bO7Bmdn5RFXNKksUkR7A2+7yc8K4/kYrr7CEq5//koTYKB6eMZSofRtg0eXO7McT/2QDAkyDVVRURIsWdh6xqWrRogUFBQVBlQ3naLTRwK3egQZAVX8E0t3lxo+5r2WydscBHjpvCJ3jipwBAZ4oZ0BAbFV3bTCmYbA9mqarLn0bzj2bWOBAFcsOuMuNj1e/2sqLX2zml6N6c2rfDvDyRbB7HVz0CiT1iHTzjDEmKOHcs/kK+LWIVFiHOKHxl+5y42XDroPcvPgb0nokcd1p/eCTB2HNa3DaH6DXyEg3zxhjghbOYHMHzvxoa0TkDhG5SkTmApnAacDcMK670ckvcs7TxER7eOT8oURveA/e+wMcMxVG/CrSzTPGVOODDz5ARHj33XeDKp+ens6yZeG5n6SIkJ6eHpa6ayNswUZV3wQm4hwyuwX4C/B/OCPTJqrq2+Fad2P0xzfWsDo7lwenH0fXkm2w6FLofAxMetQGBBjTxM2dOzdswWb58uVcdtllYam7NsJ9P5s3gTdFJAFIAvbZ/Wwqe+ObbP65/EcuP6UnY3q2hL+fDeKBGTYgwBhTUUFBAXFxcQHnHz68YcyHXC+3AFDVw6q61QJNZZv2HObGhasYclRbfnt6f3j1V7DrO5j6NCSlRrp5xjR7L7zwAgMGDCA+Pp7BgwezdOlSRo0axahRoyrlzcnJYdasWSQlJdG6dWtmzpxZ43UpZSO85s2bh4hUOOw1a9YsunfvzvLlyznppJNo0aIFv/vd7wB48cUXGTNmDB07diQxMZGhQ4fyj3/8w2/93ofR0tPTERHWr1/PmWeeSWJiIj169OCOO+6gtDR8cyOH86LOG0Xk0SqWPSIivw3XuhuLwuJSfv3CSkTg0fOHEvvfR2D1KzAuHXqPiXTzjGn23nnnHWbOnMmAAQNYtGgRN9xwA3PmzGHdunV+88+ZMwcR4YUXXmDevHksXbqUqVOnVruO5cuXA05gWb58eaXDXjk5OcyYMYPzzz+f//znP1xwwQUAbNiwgalTp/Lcc8/xyiuvcNZZZ3HZZZfxxBNPBPTZpkyZwpgxY3jllVc4++yzuf322/0Gq1AJ52G02cADVSz7CrgBuC+M62/w7nnzO77eksMTFx7PUXs/g3fnwqBz4KRrIt00Y0Jm7muZrN6WG9E2DOzamtvPGlTrcrfffjsDBw5kyZIl5XsggwcP5vjjj6dfv36V8g8aNIhnnnkGgAkTJtCuXTsuvPBC3nvvPcaOHet3HWWHubp16+b3kNfBgwd59tlnmTx5coX0m2++ufx1aWkpo0aNIjs7m8cff5wrr7yyxs92/fXXM3v2bADGjRvHsmXLeOGFF8rTQi2ch9FSgPVVLNsANOuLRt5ZvYO/f7KRWSelMqFrHiy8FDoNhMl/tgEBxjQAJSUlZGRkcO6551a4mHHYsGH07NnTb5np06dXeD9t2jQ8Hk/53kswoqOjmThxYqX09evXc/7559OtWzdiYmKIiYnhqaeeYu3atQHVe+aZZ1Z4f8wxx7Bp06ag21mTcO7ZHAa6VbGsOxDcnAdNQG5+ETcs+JpjurXmpnFHwT/OcBbMeBZiW0a2ccaEWDB7FA3B7t27KSoqolOnTpWWde7c2W8Z3/TY2FiSkpLYunVr0O3o1KkTUVEVb/d+8OBBTjvtNBISErj77rvp3bs3sbGxPP744zz99NMB1duuXbsK7+Pi4sjPzw+6nTUJZ7D5GPitiCxU1fLAIiJxODNBfxzGdTdoqzbnkJNXxKOnDyHu9Wth52qYuQDa9Yp004wxrg4dOhATE8POnTsrLduxYwcpKSl+070VFhayb98+unWr6nd3zfxNEbN8+XJ+/PFHPv74Y04++eTy9OLi4qDXE27hPIyWDvQF1onIPBH5pYjMA9a56beFcd0NWua2HADStj0HmYth7G3QZ1yEW2WM8RYVFUVaWhqLFi1C9ch9IFesWMHGjRv9lnn55ZcrvF+wYAGlpaWMGDGi2nXFxsaSl5cXcNsOH3YG9sbExJSn7du3j1dffTXgOupbOC/q/Bpnss0fgRuBP7vPG4FR7vJmaXV2LpNarSXhoztg4GT46ZxIN8kY48fcuXPJzMxkypQpvPHGG/zzn/9k2rRpdOnSBY+n8uYzMzOT2bNn89Zbb/Hoo49y1VVXMXLkyCoHB5QZOHAgr7/+Ou+88w4ZGRls27at2vwnnXQSrVu35le/+hWvv/46L7/8MiNHjqRDhw51+rzhFNbrbFT1f6p6KtAK5zxNK1UdpaoZ4VxvQ5e1NZt5JQ9Bh/4w+TEbEGBMA3Xaaafx3HPPsWbNGqZMmcI999zDAw88QJcuXfzeQOzhhx9GVTnvvPO4+eabmThxIgsXLqxxPX/+859p2bIlZ511FieccAJPPvlktfk7duzIkiVLKCkpYerUqdx0001cdtllXHjhhUF/1nAT791DU1laWppmZIQuNuYVlvCL9Hv5Z+zdcOFi6FP9Lx5jGpM1a9Zw9NFHR7oZYbVlyxb69OnDLbfcwq233hrp5tS7mvpYRFaoappvetgGCLizPXtUtdgrbTxwDLBMVb8M17obsrU7DnCMuMd7uw2LbGOMMdXKy8vjuuuuY9y4cXTo0IENGzZw7733kpCQ0CDmG2tMwjka7QWc4c0XA4jIlcBj7rIiETlTVYObIrURy9yWwyDPRopb9yC6RVKkm2OMqUZUVBTbt2/n6quvZs+ePbRs2ZJTTjmFBQsWkJycHOnmNSrhDDbDcQYElPkt8BTOsOcncWaCbnbBZvW2XK6KyiKqe/WjU4wxkRcbG8uSJUsi3YwmIZwDBDoBWwFEpA/QE/izqh4AngEG16YyETlKRBaKSI6I5IrIYhGpPNDdf1mt4jGkdh+p7rK2bKU7O5Hkel+1McZETDj3bHKB9u7rUcBuVV3lvi8B4gOtyL1FwTKcw3KXAArcCbwvIseq6qEAqpkP/NUnzf9semFSUqrE7FwFUUDycfW5amOMiahwBpvPgN+LSDEwB3jDa1kfYEst6roc6AX0V9XvAURkFc7ca78AHgygjq2q+nkt1hlyG3cfpF/pBjfYDIlkU4wxpl6F8zDa74B2wFKcvZh0r2XnAbWZmW4S8HlZoAFQ1Y3Ap8DkKks1MJnbchns2UhRYjdo2b7mAsYY00SEcwaB9araD+ioqn1UNctr8bU4wShQg4Bv/aRnAgMDrOMqESkQkcMiskxETqnF+kNidXYux3iyiOo2tL5XbYwxERX2O3WqaqXb1KnqN6q6qxbVtAP2+Unfi3O76Zo8C/wSGAdcgXMuaZmIjPKXWUSuEJEMEcnYtas2zazexi3Z9JTteLoOCVmdxhjTGITznE2o+ZvqIKB5XlT1Iq+3H4vIqzh7SncCJ/vJ/yTO8GzS0tJCMsWCqqLZ7vgICzbGmGYm7Hs2IbIPZ+/GVxL+93iq5Q6/fh04oY7tCtiO3AJSCtzBbzYSzZgm5YMPPkBEePfd4C4dTE9PZ9myZSFu1RGvvPIKDz4YyDiq8GkswSYT57yNr4HA6iDrFPzvLYXF6uwcjvFkUZjQBRIr34zJGNN8zZ0714JNA7EUGC4i5XcXE5FU4KfusloRkdbAmcB/Q9XAmmRuzWWwbMTTbUh9rdIYYxqMxhJs/gZkAa+KyGQRmQS8CmzG60JNEekhIsUicptX2g0i8jcRuUBERonIJThDprsA/1dfH+CHrTvo5ckm2kaiGdOovPDCCwwYMID4+HgGDx7M0qVLGTVqFKNGjaqUNycnh1mzZpGUlETr1q2ZOXMme/ZUGiNVQdmdOOfNm4eIICKkp6eXL//www8ZO3YsrVq1omXLlowfP55vv604OPett97ipJNOok2bNiQmJtK/f3/uuOMOAGbNmsU//vEPtm7dWl5/ampqnb6TYIQk2IhITxF5T0Q2iMiDIhLvtex/da3fnSFgDM4V//8CnsO5CdsYVT3o3RScSya9P9danMNtjwDv4FwAuhE4WVXr7dbURVu/xoPaxZzGNCLvvPMOM2fOZMCAASxatIgbbriBOXPmsG6d/8lH5syZg4jwwgsvMG/ePJYuXcrUqVOrXcfy5c4lh7NmzWL58uUsX768fEbp119/nbFjx5KYmMizzz7L888/z4EDBzjllFPYvHkzABs2bGDSpEn07NmTl156iaVLl3Lddddx6JAzscqtt97Kz372Mzp27FhefyTmewvVaLTHgMXA58CvgfdEZIJ7Ij6m2pIBUtVNwLk15MnCZ4Saqr4GvBaKNgQrN7+Ijge/c74JGxxgmpv//B62fxPZNnQZDGfcXetit99+OwMHDmTJkiXleyCDBw/m+OOPp1+/fpXyDxo0iGeeeQaACRMm0K5dOy688ELee++9Ku/WOXz4cAC6detW/rrMtddey8iRIyvc7nn06NH06tWLBx54gD/96U+sXLmSwsJCHn/8cVq3bg3AmDFjyvP37t2bjh07EhsbW6n++hSqw2idVfUvqrpCVWcB/8YJOG2ox5PwDdV32QcY7NlIQXxHaG3TkhvTGJSUlJCRkcG5555bHmgAhg0bRs+ePf2WmT59eoX306ZNw+PxlO+91Mb69ev54YcfmDlzJsXFxeWPhIQERowYwUcffQTAkCFDiImJYcaMGSxcuJCdO3fWel31IVR7NnHeb1T1LhEpAt7DuSV0s5a5LYcRkmV7NaZ5CmKPoiHYvXs3RUVFdOpUefRo586d/ZbxTY+NjSUpKYmtW7fWev1lQePSSy/l0ksvrbQ8JcWZ9L5Pnz689dZb3HPPPVx00UUUFBRwwgkncO+99zJy5MharzdcQhVs1onIaar6TlmCqt4vIqXA/SFaR6O1fstOLvZsxXPUjEg3xRgToA4dOhATE+N3T2HHjh3lG3vfdG+FhYXs27ePbt261Xr97ds78yfeddddjBs3rtLy2NjY8tejR49m9OjRFBQU8Omnn3Lbbbdx5plnkpWVRYcOHWq97nAI1WG0GcBHvomq+iBwVIjW0Wjlb/maKErtHjbGNCJRUVGkpaWxaNEiVI+cDVixYgUbN270W+bll1+u8H7BggWUlpYyYkT1N0uMjY0lLy+vQlr//v1JTU0lMzOTtLS0So9jjz22Uj1xcXGMGTOG3/3udxw6dKi8nXFxcZXqr28h2bNR1YJqltV+/7EJKSwupfX+1c4YOZumxphGZe7cuZx++ulMmTKFK664gt27d5Oenk6XLl3weCr/Vs/MzGT27NnMmDGDdevWccsttzBy5MgqBweUGThwIK+//joTJkwgKSmJrl270rVrV/7yl78wefJkCgsLmT59Oh06dGDHjh189tlnpKSkcN111/HEE0/w0Ucf8bOf/YyjjjqK3bt3c9ddd9G1a1eOOeaY8vr37t3L448/TlpaWvkw7nqlqvao5nH88cdrXXy7db++dMtZmj+vh2ppaZ3qMqahW716daSbEHLPPfec9uvXT2NjY3XgwIG6ePFiHTJkiJ599tnled5//30FdNGiRXrJJZdomzZtNDExUc8//3zdtWtXjev45JNPdNiwYRoXF6eA3n777eXLPvvsMz3zzDO1bdu2GhcXpz169NDzzjtPP/vss/LlkyZN0u7du2tsbKx26dJFp06dqt999115HQcPHtQZM2Zo27ZtFdAePXoE/X3U1MdAhvrZlopqaAeLicjJwM+AYmCJqn7pJ0974ExV/WdIVx4GaWlpmpGREXT5BRmbGbT0TFJTe5Lw81drLmBMI7ZmzRqOPvroSDcjrLZs2UKfPn245ZZbuPXWWyPdnHpXUx+LyApVTfNND+mszyIyA2c6/7L9y5tF5GpVfUJEugDnA1OAEW6eBh9s6mrtll2cLVuIOqraS4SMMQ1QXl4e1113HePGjaNDhw5s2LCBe++9l4SEhPILL01gQn2Lgd8Dq3Bu47wDGA3cKSIJwDycIdI7gfnAKyFed4N0aPMqYqQEbE40YxqdqKgotm/fztVXX82ePXto2bIlp5xyCgsWLCA52a6Zq41QB5u+wHRVXeG+/5eI5AEvA5twbmD2Hw31sbsGSlVpsfsbZ04Du8bGmEYnNjY2IlO7NEWhnoizBeB7a8u33efrVfWN5hJoADbvzaNPyQ8UxLSGtj0i3RxjjImYcMz67BtMDrnPWWFYV4O2OjuHwZ6NFHYcDBLQTUWNMaZJCsdtoT8Uke9wbniWiTPrsgKlYVhXg7Zmyx7GyGY8PSZFuinG1BtVrTCXmGk66nJgKtTB5gpgiPuYDMzECTQCvCUiGcAKIANnLHaTvuAz98dVxNrgANOMxMTEkJeXR0JCQqSbYsIgLy+PuLi4mjP6EdJgo6pPeb8Xkb44gWcoR4LQhLLsONfVN1kxO1c5L2yaGtNMdOrUia1bt9KtWzdatGhhezhNgKpSXFzMgQMH2L17d5WTkNYkHIfRyqnqemA9sKAsTUQ6AcOAJj08a8/BAlIK1lEYl0hskv/pyI1pasrup7Jt2zaKiooi3BoTKtHR0cTHx5OSkkJ8fHzNBfzVEeI21UhVdwJvuo8ma3V2Lsd4ssjrMIhYP3MoGdNUtW7dujzoGFOm3oNNczGsWyItojdT0mN8pJtijDERZ8EmTFrm/gClhXi6D4t0U4wxJuLs+E64aCn0OwO6WbAxxhjbswmX5GPhghcj3QpjjGkQbM/GGGNM2FmwMcYYE3Yhv3laUyMiu4Afa1GkA7A7TM0xwbN+aZisXxqmuvRLD1Xt6JtowSbERCTD313qTGRZvzRM1i8NUzj6xQ6jGWOMCTsLNsYYY8LOgk3oPRnpBhi/rF8aJuuXhink/WLnbIwxxoSd7dkYY4wJOws2xhhjws6CTQiIyFEislBEckQkV0QWi0hKpNvVVIlIdxF5VESWi8hhEVERSfWTL0lEnhKR3SJySETeFZHBfvLFi8h9IpItInluvafWy4dpIkRkqogsEpEf3e9wrYjcJSKtfPJZn9QjERkvIstEZLuIFIjIFhF5WUQG+uQLe79YsKkjEUkAlgEDgEuAi4C+wPsi0jKSbWvC+gDTgX3Ax/4yiHOLyKU4d4b9NXAuEIPTL919sv8duBy4DZgIZOPcxnxIOBrfRN0AlAA343znjwNXAe+IiAesTyKkHbACuBo4HbgJGAR8LiI9oB77RVXtUYcHcC3OP1kfr7SeQDFwXaTb1xQfgMfr9WU4txhP9ckz2U0f7ZXWBtgLPOKVdpybb7ZXWjSwFlga6c/aWB5ARz9pF7vf7Rjrk4bzAPq73+/19dkvtmdTd5OAz1X1+7IEVd0IfIrTiSbEVLU0gGyTgG2q+r5XuRzgNSr2yySgCHjJK18x8CIwXkTiQtLoJk5Vd/lJ/sJ97uY+W580DHvc57L7dtdLv1iwqbtBwLd+0jOBgX7STf2orl9SRCTRK99GVT3sJ18sziE7E5yR7vMa99n6JEJEJEpEYkWkL/BXYDtOkIB66hcLNnXXDufcga+9QFI9t8UcUV2/wJG+qSlfuxC3q1kQkW7AHcC7qprhJlufRM5/gQJgHXAszqHNne6yeukXCzah4e/KWKn3VhhvQmD9Emg+EyD3l/CrOOctZ3svwvokUi4ChgMXALk4AzdS3WX10i8WbOpuH/4jehL+fwWY+rGXqvsFjvRNTfn2+llmqiAi8Tgjm3oB41V1i9di65MIUdU1qvpfVX0BGAskAr93F9dLv1iwqbtMnGOZvgYCq+u5LeaI6vplk6oe9MrX0x3C7puvEPgeExARiQEWAScCP1PVb3yyWJ80AKq6H+c7LDvHUi/9YsGm7pYCw0WkV1mCu3v6U3eZiYylQDcRKTtJjYi0Bs6iYr8sxbmmYJpXvmjgPOBtVS2on+Y2bu61NM/h/GqerKqf+8lmfdIAiEhnnOsCf3CT6qVfbCLOOnIv3PwayAP+D+eY5h+AVsCxXr8KTAiJyFT35VjgSuCXwC5gl6p+6G78PgGOAn6LcyjgJpyTo8ep6mavul4Exrv5NuJcjDgROElVV9bPJ2rcRORxnH6YB/zbZ/EWVd1ifVL/RGQJsBJYhXOuph/wG6ALcKKqrqu3fon0BUZN4QGk4Bw+yAUOAK/gc5GhPUL+nWsVjw+88rQDnsY5lnwYeM/95/GtqwXwIM5w0HyckTujIv0ZG9MDyKqmT9KtTyLWLzfizCCw3/2+1+IMfU71yRf2frE9G2OMMWFn52yMMcaEnQUbY4wxYWfBxhhjTNhZsDHGGBN2FmyMMcaEnQUbY4wxYWfBxpgIEJG2IpIuIsP8LPtARD6IQJvmiMg59b1e0zzYdTbGRIA7pdFG4HJVfcpn2UAAVa3XufVEJAv4RFUvrM/1muYhOtINMMZUVN9BJpxEJE5tLjODHUYzzZB7+EpFpK+IvC4iB0XkRxG5zZ0nqqbyCSJyj4hsFJFC9/kW77Iikigij4rIJhEpEJEdIvKuiAzw2qsB+JvbFhWRWW7ZCofRRGSUu/xsEfmriOwVkX0i8pB7B8YTROQTETkkIpkiMt6nvSeIyEIR2SIieSKyVkT+KCItvPJkAT2AmV7tme+1fIKILHfL54jIKyLS32c9H7jtOEtEvhSRApw56xCRa0VkjVt+n4hkiMiUwHrMNAW2Z2OasyXAM8BDODPczgU2u2l+ubPcvoUzrfofgG9wbkp1K878Ute7WR/CuWf7zcB6oD3OTOBtgS+Bc4DFwF0cmVm3bBbeqvzJLXMecCrOxK/RwDjgPmCrm7ZYRHqo6m63XArwFTAfZ+6+QcBtOPecmeHmmQK8gTOpbLqbtsv9zBOA14Fl7roTce7C+YmIDFHVrV5t7Ac84n43G4C9IjITeMAt8zHO/FrHYnfcbF4iPVGcPexR3w+cjakCs33Sv8GZKr26she5ZU/1Sb8F554endz33wIPVlNPqlvPZX6WfUDFCUVHuXmf9sm30k0/2SvtWDftkirWKzgB6kKgFGjvtSwLeNZPmQycgBntldYTKPL+jG67S4EhPuX/DKyMdL/bI7IPO4xmmrPXfd5/i7MXUJ0JwI/AZyISXfYA3sa518dwN98XwCwRuVlE0kQkKgTt/Y/P+++AQ6r6iU8aONPFA869SdzDfj/g3Ie+CPgXTuDpW90K3VtoDANeUtXisnRV3Qh8Coz0KZKlql/5pH0BDHEPK47zc/Mt0wxYsDHNme9tbAuA+BrKdMI5t1Hk8/ifu7y9+/xrnKncf46zsd3pnmOpy4bW9zbjhThTx5dT1UL3pffneAbnXjOPAKcBJwC/8pPPnyScoJTtZ9l2Kh8K85fvnzj3PfkJziHIvSKy2D13ZZoJO2djTO3swTm5P72K5VkA6tw07ybgJhHpAUwF7sYJEDeGv5kOEYkHJuPcU+Zhr/TBAVaxD+ewXBc/y7rgfB/eKl1LoaqKE3j/KiJJwOk453BewglAphmwPRtjaudNnENUB1U1w89jt28BVf1RVR/AOSd0jJtcNhy4hW/+EIsDonD2vrzN8pO3wLc9qnoI5+Zb07wPBboB9CTgw9o0RlX3qepLwMsc+S5MM2B7NsbUznPAbOA9EXkAZ/RWLNAbZ/TZ2ap6WESW44wy+wY4iHNu4zjgH249O3D2CmaIyCrgELBRVX33FOpEVXNE5HPgehHJBnbjHNrr5if7auAUEZmIc4hst6pm4Yy0ex34t4g8hjMabS6Qg7OHUi0ReRJnFNxyYCfOiLWLcM5zmWbC9myMqQVVLcK5B/vfgCtwhgs/B1wCfIZzmAzgI5xDbc/hbKinAr8pO5SlqqXAZTjnRN7FOa9zVpiafT7O3slfcIY/bweu9ZPvJpzbBr/stifdbeubwJk4w7ZfBp4A1uCMgtsWwPo/BY4HHgPewRm59yzOd2aaCZuuxhhjTNjZno0xxpiws2BjjDEm7CzYGGOMCTsLNsYYY8LOgo0xxpiws2BjjDEm7CzYGGOMCTsLNsYYY8Lu/wEoZZcMq1mJ9wAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplot(2,1,1)\n",
    "plt.plot(n_estimators_values, score_rf_train, label=\"rf train\")\n",
    "plt.plot(n_estimators_values, score_rf_test,  label=\"rf test\")\n",
    "plt.ylabel(\"$R^2$ score\");\n",
    "plt.legend();\n",
    "plt.subplot(2,1,2)\n",
    "plt.plot(n_estimators_values, score_gb_train, label=\"gb train\")\n",
    "plt.plot(n_estimators_values, score_gb_test,  label=\"gb test\")\n",
    "plt.xlabel(\"n estimators\");\n",
    "plt.ylabel(\"$R^2$ score\");\n",
    "plt.legend();\n",
    "plt.tight_layout();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Your task is to do ONE (or more if you have time) of the following: \n",
    "\n",
    "- Create a visualization that makes RF look better than GB.\n",
    "- Create a visualization that makes GB look better than RF.\n",
    "- Create a visualization that makes RF and GB look equally good.\n",
    "\n",
    "When you have a visualization, copy or screenshot it and paste it into the Google Doc."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Below are my plots made during the activity:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### RF better than GB"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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MTRp0oSGDRsyevRoNm7cWOz0RQSAO++8ExFBRMjIyMjvP2PGDAYOHEiDBg2oV68egwcPZv78+YWm8cEHH3DUUUfRqFEj6tevT9euXbnjjjsAGDNmDP/73/9YtWpV/vTT0tLKtU5qKrvppzIt/hC+ehyOuBy6nBh0NMaYUvroo48YPXo0w4YN4/7772fDhg2MGzeOXbt20aVLl32GHzduHIMGDeKll15iyZIl3HTTTaxevZpp06YVOY/Zs2dz5JFHMmbMmPz3WLZt657Pfueddxg+fDhDhw7l+eefB+Cee+7h2GOPZd68eey///4sW7aMYcOGMWrUKG699VaSkpJYsmQJy5YtA+CWW25h/fr1fPPNN0ydOhWA5OTkCl1PNYUlzMqyfR28eSXsdxAMuj3oaIwJzns3wJofg42hZU84qfSPct122210796dN954I78k2LNnTw477DDfhNmjRw+effZZAIYMGULTpk0555xz+OSTTxg4cKDvPPr27QtAmzZt8v8OGTt2LP369ePNN9/M7zZgwAA6duzI/fffz4MPPsjcuXPZvXs3jz/+OA0bNgTg+OOPzx++U6dONG/enKSkpH2mb0rHqmQrQ14evHE55GyD056B2nWCjsgYU0p79+5lzpw5nHbaafnJEqB379506NDBd5wzzjij0P+nn346CQkJzJ49u9TzX7JkCb/88gujR48mNzc3/5OSksKRRx7JZ599BkCvXr2oXbs2Z511Fq+//jrr1q0r9bxMdKyEWRm+ehx++QSGToAW3YKOxphglaFkFws2bNjAnj17aNGixT799tvP/36EyO5JSUk0adKEVatWlXr+ocR30UUXcdFFF+3Tv127dgAccMABfPDBB9xzzz2ce+655OTk0KdPH+6991769etX6vmaolnCrGi//wAf3QZdh0L6hUFHY4wpo2bNmlG7dm3fEtvatWvzE1Zk93C7d+8mKyuLNm3alHr+qampANx1110MGjRon/5JSUn5fw8YMIABAwaQk5PDF198wa233srQoUPJzMykWbNmpZ638WdVshVp9w73FpJ6zWDYIxBWjWOMiS+JiYmkp6czadIkVDW/+7fffsuvv/7qO86rr75a6P/XXnuNvLw8jjzyyGLnlZSURHZ2dqFuXbt2JS0tjQULFpCenr7P5+CDD95nOsnJyRx//PH89a9/ZceOHflx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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "nmax = 3\n",
    "\n",
    "# plt.plot(n_estimators_values[:nmax], score_rf_train[:nmax], label=\"rf train\")\n",
    "plt.plot(n_estimators_values[:nmax], score_rf_test[:nmax],  label=\"rf test\")\n",
    "# plt.plot(n_estimators_values[:nmax], score_gb_train[:nmax], label=\"gb train\")\n",
    "plt.plot(n_estimators_values[:nmax], score_gb_test[:nmax],  label=\"gb test\")\n",
    "plt.xlabel(\"n estimators\");\n",
    "plt.ylabel(\"$R^2$ score\");\n",
    "plt.legend();\n",
    "plt.title(\"for most values of n_estimators, RF is betteR!!\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### GB better than RF"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plt.plot(n_estimators_values, score_rf_train, label=\"rf train\")\n",
    "plt.plot(n_estimators_values, score_rf_test,  label=\"rf test\")\n",
    "# plt.ylabel(\"$R^2$ score\");\n",
    "# plt.legend();\n",
    "# plt.subplot(2,1,2)\n",
    "# plt.plot(n_estimators_values, score_gb_train, label=\"gb train\")\n",
    "plt.plot(n_estimators_values, score_gb_test,  label=\"gb test\")\n",
    "plt.xlabel(\"n estimators\");\n",
    "plt.ylabel(\"$R^2$ score\");\n",
    "plt.legend();\n",
    "plt.title(\"GB FTW!!!\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Equally good"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "nmax = 2\n",
    "\n",
    "# plt.plot(n_estimators_values, score_rf_train, label=\"rf train\")\n",
    "plt.plot(n_estimators_values[:nmax], score_rf_test[:nmax], 'b', label=\"rf test\")\n",
    "plt.ylabel(\"RF $R^2$ score\");\n",
    "plt.legend(loc=\"lower left\");\n",
    "plt.ylim((0.8, 0.9))\n",
    "plt.twinx()\n",
    "# plt.plot(n_estimators_values, score_gb_train, label=\"gb train\")\n",
    "plt.plot(n_estimators_values[:nmax], score_gb_test[:nmax], '--r', label=\"gb test\")\n",
    "plt.xlabel(\"n estimators\");\n",
    "plt.ylabel(\"GB $R^2$ score\");\n",
    "plt.legend();\n",
    "plt.ylim((-0.03, 0.98))\n",
    "plt.title(\"Both equally good!!!\");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "celltoolbar": "Slideshow",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
